/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.com.ecommerce.action.produto;

import br.com.ecommerce.Constantes;
import br.com.ecommerce.form.ProdutoForm;
import br.com.ecommerce.model.Produto;
import br.com.ecommerce.model.dao.ProdutoDAO;
import java.io.File;
import java.io.FileOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;

/**
 *
 * @author Junior
 */
public class AlterarProdutoAction extends org.apache.struts.action.Action {
    
    /* forward name="success" path="" */
    private static final String SUCCESS = "success";

    private int tamanhoArquivo;
    
    /**
     * This is the action called from the Struts framework.
     * @param mapping The ActionMapping used to select this instance.
     * @param form The optional ActionForm bean for this request.
     * @param request The HTTP Request we are processing.
     * @param response The HTTP Response we are processing.
     * @throws java.lang.Exception
     * @return
     */
    @Override
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {

        ProdutoForm produtoForm = (ProdutoForm) form;
        Produto produto = new Produto();
        BeanUtils.copyProperties(produto, produtoForm);

        // tenta salvar a imagem do form no servidor:
        tamanhoArquivo = produtoForm.getImagemProduto().getFileSize();

        if (tamanhoArquivo > 0) {
            FormFile imagemProduto = produtoForm.getImagemProduto();

            File pastaImagens = new File(getServlet().getServletContext().getRealPath("/") +
                    Constantes.PASTA_IMAGENS_PRODUTOS);

            if (!pastaImagens.exists())
                pastaImagens.mkdirs();

            File arquivoImagem = new File(pastaImagens,
                    produto.getNomeProduto() + ".jpg");

            arquivoImagem.createNewFile();

            FileOutputStream fileOutStream = new FileOutputStream(arquivoImagem);
            fileOutStream.write(imagemProduto.getFileData());
            fileOutStream.flush();
            fileOutStream.close();
        }
        // salva o produto no banco de dados
        ProdutoDAO dao = new ProdutoDAO();
        dao.beginHibernate();
        dao.atualizarProduto(produto);
        dao.commitTransaction();
        dao.closeSession();

        return mapping.findForward(SUCCESS);
    }
}
